home *** CD-ROM | disk | FTP | other *** search
/ The Games Machine 76 / XENIATGM66.iso / Indiana Jones / Indiana Jones.exe / RESOURCE / PREVIEW.GOB / cog_sol_fusebox.cog < prev    next >
Text File  |  1999-11-15  |  8KB  |  311 lines

  1. # Jones 3D Cog Script
  2. #
  3. # SOL_FuseBox.cog
  4. #
  5. # Putting fuse in fusebox gives player 10 points of damage.
  6. # This cog turns on the levers and master control.
  7. #
  8. # 77 = FUSE
  9. #
  10. # [TRM]
  11. #
  12. # (C) 1999 LucasArts Entertainment Co. All Rights Reserved
  13. # ========================================================================================
  14.  
  15. symbols
  16.     
  17.     message     startup
  18.     message     activated
  19.     
  20.     # ** Things **
  21.     thing       player      local
  22.     thing       box         local
  23.     thing       shockIndy   local
  24.     thing       bolt        local
  25.     thing       fuseBox
  26.     thing       ghostBox
  27.     thing       interpCam
  28.     thing       box_Orient
  29.     
  30.     # ** Panel switches **
  31.     surface     switch1
  32.     surface        switch2
  33.     surface        switch3
  34.     surface        switch4
  35.     surface        switch5
  36.     
  37.     # ** COG links **
  38.     cog         lever1
  39.     cog         lever2
  40.     cog         lever3
  41.     cog         lever4
  42.     cog         lever5
  43.     cog         panelSay
  44.     cog         masterCtrl
  45.     
  46.     # ** sounds **
  47.     sound       shock=sol_fuse_shock_c.wav      local       # zzzap!
  48.     sound       inFixed=inxj017a.wav            local       # Yeow!
  49.     
  50.     sound       in_Line0=Sl03j01.wav            local       # I think somebody blew a fuse
  51.     sound       in_Line1=Sl03j02.wav            local       # the fuse is blown
  52.     sound       in_Line2=Sl03j02a.wav           local       # I just need a fuse
  53.     
  54.     # ** Templates **
  55.     template    tplActor=indy_sh_actor      local
  56.     template    tplBox=boxfuse              local
  57.     template    tplRedSparks=redsparks      local
  58.     template    tplBlueSparks=bluesparks    local
  59.     
  60.     material    mat0=gen_a4sprite_rbblast.mat       local
  61.     material    mat1=gen_a4sprite_flash_purple.mat  local
  62.     
  63.     keyframe    inShocked=in_activate_medium_shock.key    local
  64.     
  65.     cog         hintCog
  66.     
  67.     # ** misc **
  68.     int         on=0                local
  69.     int         visit1=1            local
  70.     int         visit2=0            local
  71.     int         playing=0           local
  72.     int         i=0                 local
  73.     int         bolts=5             local
  74.     int         curHealth           local
  75.     
  76.     int         zap                 local
  77.     int         victim              local
  78.     
  79.     int         newComment          local
  80.     int         oldComment          local
  81.     
  82.     int         curItem             local
  83.     
  84.     vector      vecTarg             local
  85.     vector      vecPos              local
  86.     
  87.     # ** subroutines **
  88.     flex        powerOn             local
  89.     flex        speak               local
  90.     
  91. end
  92.  
  93. # ========================================================================================
  94.  
  95. code
  96.  
  97. startup:
  98.     
  99.     SetThingLight(fuseBox, '0.3 0.3 0.2', 0.2, 0.5);
  100.     return;
  101.     
  102. # ========================================================================================
  103.  
  104. activated:
  105.  
  106.     player = GetLocalPlayerThing();
  107.     curItem = GetCurItem(player);
  108.  
  109.     if((GetSenderRef() == fuseBox) && (on == 0) && (playing == 0))
  110.     {
  111.         # player is correctly using fuse
  112.         if(curItem == 77)
  113.         {
  114.             on = 1;
  115.             Call powerOn;
  116.         }
  117.             
  118.         # player doesn't have or is not using fuse
  119.         else if(curItem == 0)
  120.         {
  121.             playing = 1;
  122.             Call speak;
  123.         }
  124.         
  125.         else
  126.         {
  127.             playing = 1;
  128.             Call speak;
  129.         }
  130.     }
  131.         
  132.     return;
  133.     
  134. # ========================================================================================
  135.  
  136. powerOn:
  137.  
  138.     # do cutscene stuff
  139.     MakeMeStop();
  140.     StartCutscene(0);
  141.     
  142.     # align the player to the fuse box
  143.     CopyOrient(box_Orient, player);
  144.     
  145.     # switch to interpCam
  146.     SetExtCamOffsetToThing(interpCam);
  147.     Sleep(0.5);
  148.     
  149.     # put away any weapon
  150.     DeselectWeaponWait(player);
  151.     
  152.     # nudge fuse box
  153.     PlayMode(player, 60, 0);
  154.     Sleep(0.6);
  155.                         
  156.     # create shockIndy
  157.     shockIndy = CreateThing(tplActor, player);
  158.     CaptureThing(shockIndy);
  159.     
  160.     # outfit shockIndy actor
  161.     CopyPlayerHolsters(player, shockIndy);
  162.     
  163.     # hide player show actor
  164.     SetThingFlags(player, 0x80000);
  165.     ClearThingFlags(shockIndy, 0x80000);
  166.     
  167.     # stop unfinished animations
  168.     ResetThing(player);
  169.     
  170.     # play shocked key
  171.     PlayKey(shockIndy, inShocked, 4, 0x12, 0);
  172.     Sleep(0.2);
  173.     
  174.     # play zap sfx
  175.     zap = PlaySoundLocal(shock, 1.0, 0.0, 0x0, 0);
  176.     
  177.     # damage player
  178.     if(GetThingHealth(player) > 55)
  179.     {
  180.         curHealth = GetThingHealth(player);
  181.         SetThingHealth(player, curHealth - 50);
  182.         
  183.         # play yeow! voice line
  184.         PlayVoice(shockIndy, inFixed, 1.0, 0);
  185.     }
  186.     
  187.     # light up the area
  188.     SetThingLight(fuseBox, '0.7 0.2 0.8', 15.0, 0.01);
  189.     
  190.     # create and animate sparks
  191.     CreateThingAtPos(tplRedSparks, GetThingSector(player), VectorAdd(GetThingPos(fuseBox), '0.015 0.025 -0.125'), '0 0 0');
  192.     #CreateThing(tplRedSparks, fusebox);
  193.     MaterialAnim(mat0, 10, 1);
  194.     MaterialAnim(mat1, 10, 1);
  195.     
  196.     # create bolts
  197.     for(i=0; i<bolts; i=i+1)                                                                        
  198.     {                                                                                                    
  199.         vecPos = VectorSet(0.0, 0.0, rand()*0.05);
  200.         vecTarg = VectorAdd(GetThingPOS(player), vecPos);
  201.         bolt = CreateLightning(fuseBox, '0.015 0.025 -0.125', vecTarg, 0.005, 0.005, 0.4);  # 0.05
  202.         
  203.         if(i == 1)
  204.         {
  205.             Sleep(0.2);
  206.             CreateThingAtPos(tplRedSparks, GetThingSector(player), VectorAdd(GetThingPos(fuseBox), '0.015 0.025 -0.125'), '0 0 0');
  207.             #CreateThing(tplRedSparks, fusebox);
  208.         }
  209.     
  210.         if(i == 3)
  211.         {
  212.             Sleep(0.05);
  213.             CreateThingAtPos(tplBlueSparks, GetThingSector(player), VectorAdd(GetThingPos(fuseBox), '0.015 0.025 -0.125'), '0 0 0');
  214.             #CreateThing(tplBlueSparks, fusebox);
  215.         }
  216.         Sleep(Rand()*0.05+0.01);
  217.     }
  218.     
  219.     # destroy old fuse box
  220.     DestroyThing(fuseBox);
  221.     
  222.     # swap in fuse box with fuse
  223.     box = CreateThing(tplBox, ghostBox);
  224.     CaptureThing(box);
  225.     
  226.     # remove fuse from inventory
  227.     ChangeInv(player, 77, -1);
  228.     
  229.     # wait for zap sfx to finish
  230.     WaitForSound(zap);
  231.     
  232.     # give new fusebox some light
  233.     SetThingLight(box, '0.3 0.3 0.2', 0.2, 1.0);
  234.     
  235.     # hide actor show player
  236.     SetThingFlags(shockIndy, 0x80000);
  237.     ClearThingFlags(player, 0x80000);
  238.     
  239.     # restore controls and camera
  240.     ClearActorFlags(player, 0x200000);
  241.     RestoreExtCam();
  242.     
  243.     EndCutscene();
  244.     
  245.     # solve hint6
  246.     SendMessage(hintCog, user0);
  247.     
  248.     # turn on control panel
  249.     SetWallCel(switch1, 1);
  250.     SetWallCel(switch2, 1);
  251.     SetWallCel(switch3, 1);
  252.     SetWallCel(switch4, 1);
  253.     SetWallCel(switch5, 1);
  254.     
  255.     # turn on related cogs
  256.     SendMessage(lever1, user0);
  257.     SendMessage(lever2, user0);
  258.     SendMessage(lever3, user0);
  259.     SendMessage(lever4, user0);
  260.     SendMessage(lever5, user0);
  261.     #SendMessage(masterCtrl, user0);
  262.     #SendMessage(panelSay, user0);
  263.             
  264.     return;
  265.  
  266. # ========================================================================================
  267.  
  268. speak:
  269.  
  270.     while (newComment == oldComment) 
  271.     {
  272.         newComment = RandBetween(0, 2);
  273.     }
  274.     
  275.     oldComment = newComment;
  276.     
  277.     # do cutscene stuff
  278.     MakeMeStop();
  279.     StartCutscene(0);
  280.     
  281.     # align the player to the fuse box
  282.     CopyOrient(box_Orient, player);
  283.     
  284.     # switch to interpCam
  285.     SetExtCamOffsetToThing(interpCam);
  286.     Sleep(0.5);
  287.     
  288.     # put away any weapon
  289.     DeselectWeaponWait(player);
  290.     
  291.     PlayMode(player, 60, 0);
  292.     Sleep(0.3);
  293.     
  294.     # play voice line
  295.     PlayVoice(player, in_Line0[newComment], 1.0, 1);
  296.     
  297.     # restore controls and camera
  298.     ClearActorFlags(player, 0x200000);
  299.     RestoreExtCam();
  300.     
  301.     EndCutscene();
  302.     
  303.     playing = 0;
  304.     
  305.     return;
  306.  
  307. # ========================================================================================
  308.  
  309. end
  310.  
  311.